28 research outputs found

    libcppa - Designing an Actor Semantic for C++11

    Full text link
    Parallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is both challenging and error-prone. C++11 provides standard facilities for multiprogramming, such as atomic operations with acquire/release semantics and RAII mutex locking, but these primitives remain too low-level. Using them both correctly and efficiently still requires expert knowledge and hand-crafting. The actor model replaces implicit communication by sharing with an explicit message passing mechanism. It applies to concurrency as well as distribution, and a lightweight actor model implementation that schedules all actors in a properly pre-dimensioned thread pool can outperform equivalent thread-based applications. However, the actor model did not enter the domain of native programming languages yet besides vendor-specific island solutions. With the open source library libcppa, we want to combine the ability to build reliable and distributed systems provided by the actor model with the performance and resource-efficiency of C++11.Comment: 10 page

    A Configurable Transport Layer for CAF

    Full text link
    The message-driven nature of actors lays a foundation for developing scalable and distributed software. While the actor itself has been thoroughly modeled, the message passing layer lacks a common definition. Properties and guarantees of message exchange often shift with implementations and contexts. This adds complexity to the development process, limits portability, and removes transparency from distributed actor systems. In this work, we examine actor communication, focusing on the implementation and runtime costs of reliable and ordered delivery. Both guarantees are often based on TCP for remote messaging, which mixes network transport with the semantics of messaging. However, the choice of transport may follow different constraints and is often governed by deployment. As a first step towards re-architecting actor-to-actor communication, we decouple the messaging guarantees from the transport protocol. We validate our approach by redesigning the network stack of the C++ Actor Framework (CAF) so that it allows to combine an arbitrary transport protocol with additional functions for remote messaging. An evaluation quantifies the cost of composability and the impact of individual layers on the entire stack

    Revisiting Actor Programming in C++

    Full text link
    The actor model of computation has gained significant popularity over the last decade. Its high level of abstraction makes it appealing for concurrent applications in parallel and distributed systems. However, designing a real-world actor framework that subsumes full scalability, strong reliability, and high resource efficiency requires many conceptual and algorithmic additives to the original model. In this paper, we report on designing and building CAF, the "C++ Actor Framework". CAF targets at providing a concurrent and distributed native environment for scaling up to very large, high-performance applications, and equally well down to small constrained systems. We present the key specifications and design concepts---in particular a message-transparent architecture, type-safe message interfaces, and pattern matching facilities---that make native actors a viable approach for many robust, elastic, and highly distributed developments. We demonstrate the feasibility of CAF in three scenarios: first for elastic, upscaling environments, second for including heterogeneous hardware like GPGPUs, and third for distributed runtime systems. Extensive performance evaluations indicate ideal runtime behaviour for up to 64 cores at very low memory footprint, or in the presence of GPUs. In these tests, CAF continuously outperforms the competing actor environments Erlang, Charm++, SalsaLite, Scala, ActorFoundry, and even the OpenMPI.Comment: 33 page

    libcppa – An actor library for C++ with transparent and extensible group semantic

    No full text
    Eine effiziente Nutzung paralleler Hardware setzt eine nebenläufige Ausführbarkeit von Programmen zwingend voraus. Nebenläufige Software mit Hardware-nahen Primitiven wie Threads und Mutexen zu implementieren ist komplex und fehleranfällig. Das Aktormodell ersetzt solche Kommunikation, die von Shared Memory Segmenten manipuliert durch explizite, nachrichtenbasierte Kommunikation. Dabei eignet es sich sowohl zur Implementierung nebenläufiger, als auch verteilter Software. Eine leichtgewichtige Aktormodell- Implementierung, die alle Aktoren in einem ausreichend dimensionierten Thread-Pool ausführt, kann dabei deutlich effizienter sein als eine äquivalente, Thread-basierte Anwendungen. Wir präsentieren in dieser Arbeit libcppa, eine Aktormodell-Implentierung für C++, die das Aktormodell um eine Semantik für Publish/Subscribe orientierte Gruppenkommunikation erweitert und damit die Entwicklung nebenläufiger und verteilter Anwendungen auf einem hohen Abstraktionslevel unterstützt. Unsere Ergebnisse zeigen, dass das SkalierungsverhalteParallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is challenging, especially with low-level synchronization primitives such as threads and locks in shared memory environments. The actor model replaces implicit communication by sharing with an explicit message passing mechanism. It applies to concurrency as well as distribution, and a lightweight actor model implementation that schedules all actors in a properly pre-dimensioned thread pool can outperform equivalent thread-based approaches. We build libcppa, an actor library with modular support for group semantics that is compliant to the new C++ standard. By adding a publish/subscribe oriented group communication to the actor model, we support the development of scalable and efficient concurrent as well as distributed systems at a very high level of abstraction. Results indicate that libcppa competes mature implementations of the actor model

    Eignungsuntersuchung von Eyetracking als zusätzliche Interaktionstechnik in Computerspielen

    No full text
    Wii Remote, EyeToy, Wii Balance Board: Spielen sollte einfach sein. Leicht erlernbare, intuitive Interaktionstechniken erobern derzeit den Computerspielemarkt. Sehen ist sowohl einfach, als auch intuitiv. Diese Arbeit beschäftigt sich mit den Möglichkeiten, die Eyetracking für Computerspiele bietet und geht der Frage nach, ob sich die Technologie für einen Einsatz in Computerspielen eignet

    libcppa - Designing an Actor Semantic for C++11

    No full text
    Parallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is both challenging and error-prone. C++11 provides standard facilities for multiprogramming, such as atomic operations with acquire/release semantics and RAII mutex locking, but these primitives remain too low-level. Using them both correctly and efficiently still requires expert knowledge and hand-crafting. The actor model replaces implicit communication by sharing with an explicit message passing mechanism. It applies to concurrency as well as distribution, and a lightweight actor model implementation that schedules all actors in a properly pre-dimensioned thread pool can outperform equivalent thread-based applications. However, the actor model did not enter the domain of native programming languages yet besides vendor-specific island solutions. With the open source library libcppa, we want to combine the ability to build reliable and distributed systems provided by the actor model with the performance and resource-efficiency of C++11

    libcppa - Designing an Actor Semantic for C++11

    No full text
    Parallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is both challenging and error-prone. C++11 provides standard facilities for multiprogramming, such as atomic operations with acquire/release semantics and RAII mutex locking, but these primitives remain too low-level. Using them both correctly and efficiently still requires expert knowledge and hand-crafting. The actor model replaces implicit communication by sharing with an explicit message passing mechanism. It applies to concurrency as well as distribution, and a lightweight actor model implementation that schedules all actors in a properly pre-dimensioned thread pool can outperform equivalent thread-based applications. However, the actor model did not enter the domain of native programming languages yet besides vendor-specific island solutions. With the open source library libcppa, we want to combine the ability to build reliable and distributed systems provided by the actor model with the performance and resource-efficiency of C++11

    Embedded Actors - Towards distributed programming in the IoT

    No full text
    The long-term vision of an Internet of Things (IoT) is approaching reality and leading hardware vendors expect shipment of 50 billion devices in the near future. Emerging Internet standards will enable this huge number of embedded machines to interconnect and cooperate---and raise the challenge of building suitable software environments that provide scalability, reliability, and security at an efficient level. In this paper, we introduce such an approach---a modified actor model and a corresponding runtime environment. In contrast to common tools, it offers a higher level of abstraction to design and program applications for constrained devices, while remaining efficient, reliable, and open to include the security extensions from the agenda of the IETF
    corecore